package com.ruijie.acl.service;

import com.ruijie.acl.AclDevice;
import com.ruijie.emp.device.Device;
import com.ruijie.emp.system.DeviceVendor;
import com.ruijie.foundation.annotation.DomainService;
import com.ruijie.foundation.dao.support.Page;
import com.ruijie.foundation.exception.BusinessException;
import com.ruijie.foundation.service.Repository;

/**
 * <p>
 * Title: ACL设备服务接口类
 * </p>
 * <p>
 * Description: 为ACL设备模块提供逻辑处理，以及数据库的操作。
 * </p>
 * <p>
 * Copyright: Copyright (c) 2008
 * </p>
 * <p>
 * Company: Ruijie Co., Ltd.
 * </p>
 * <p>
 * Create Time: 2009-07-15
 * </p>
 * <p>
 * Update Time:
 * </p>
 * <p>
 * Updater:
 * </p>
 * <p>
 * Update Comments:
 * </p>
 * @author ASAI
 */
@DomainService
public interface AclDeviceService extends Repository<AclDevice> {
	
	/**
	 * 分页查询
	 * 
	 * @param aclDevice ACL设备
	 * @param vendor 厂商
	 * @param pageNo 页数
	 * @param pageSize 每页显示的记录数
	 * @return ACL组列表
	 */
	public Page pageQuery(AclDevice aclDevice, DeviceVendor vendor,int pageNo, int pageSize);
	
	/**
	 * 从设备中导入ACL设备信息
	 * @param device　设备
	 * @return　ACL设备信息
	 */
	public AclDevice loadAclDevice(Device device);
	
	/**
	 * 从设备中导入ACL设备信息
	 * 
	 * @param device
	 *            设备
	 * @return 异常对象(正确时返回null)
	 */
	public BusinessException loadInfo(Device device);
	
	/**
	 * 根据设备取得ACL设备
	 * @param device 设备
	 * @return ACL设备
	 */
	public AclDevice getByDevice(Device device);
	
	/**
	 * 根据设备ID取得ACL设备
	 * @param id 设备ID
	 * @return ACL设备
	 */
	public AclDevice getByDeviceId(Long id);

	/**
	 * 同步ACL设备
	 * @param device 设备
	 * @return ACL设备
	 */
	public AclDevice syncAclDevice(Device device);
	
	/**
	 * 按设备名字获取设备
	 * @param deviceName
	 * @return
	 */
	public AclDevice getByName(String deviceName);
}
